<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name="Page-topic" content="ST-Open Tutorial: Der Lader" />
 <meta name="Description" content="ST-Open Tutorial: Der Lader" />
 <meta name="Keywords" content="ST-Open Weichwaren, Open Quelle, ST-Open, Weichwaren, Bibliothek, Bibliotheken, freie Weichwaren, Assembler, C" />
 <meta name="date" content="2012-02-22T00:00:00+00:00" />
 <meta name="robots" content="index,follow" />
 <meta name="revisit-after" content="14 days" />
 <meta name="generator" content="Bernhard Schornak, handwritten" />
 <style type="text/css"><!--@import "../../st.css";--></style>
 <link rel="SHORTCUT ICON" href="../../../../pics/favicon.ico" />
 <title>Der Lader</title>
</head>
<body id="top">
<div class="pagehd">
<div id="menu">
<ul>
 <li><a href="../../../index.htm">Weichwaren</a></li>
 <li><a href="../tut/index.htm">Tutorials</a></li>
 <li><a href="../index.htm">Dokumentation</a></li>
 <li><a href="../alp.htm">alphabetisch</a></li>
 <li><a href="../fct.htm">nach Funktion</a></li>
</ul>
</div>
<div class="update">[2012-02-22]</div>
<div class="headpc"><img src="../../pics/ste.png" alt="QuelleDoc Logo" width="75" height="75" border="0" /></div>
</div>
<div class="crlf1"></div>
&#160;&#160;&#160;<a href="index.htm"><img src="../../../../pics/nav_up.png" alt="aufw&auml;rts" width="20" height="20" border="0" title="aufw&auml;rts" /></a>
&#160;&#160;&#160;<a href="0300.htm"><img src="../../../../pics/nav_bk.png" alt="zur&uuml;ck" width="20" height="20" border="0" title="zur&uuml;ck" /></a>
&#160;&#160;&#160;<a href="0401.htm"><img src="../../../../pics/nav_fw.png" alt="vorw&auml;rts" width="20" height="20" border="0" title="vorw&auml;rts" /></a>
&#160;&#160;&#160;<a href="FFFF.htm">Glossar</a>
<div class="crlf1"></div>
<div class="text100">
<h1>Der Lader</h1>
Die urspr&uuml;ngliche Aufgabe des ehemaligen Speicherverwalters (MM) war das Laden und Speichern
 der Felder der Datenbankmaschine. Im Lauf der Zeit kamen etliche Erweiterungen dazu, so dass die
 inzwischen in Lader (LDR) umgetaufte Funktionssammlung Speicher f&uuml;r alle beliebigen Dateien
 allozieren und sie auch in den allozierten Speicher laden kann. Im Lauf der Jahre kamen etliche
 n&uuml;tzliche, aber auch einige unn&ouml;tige Funktionen hinzu, die in der neuen Version 8.1.0.
 entfernt wurden, um die Laderfunktionen weiter zu automatisieren und von unn&ouml;tigem Ballast
 zu befreien. So wurde zum Beispiel die so genannte <i>dynamische</i> Speicherverwaltung komplett
 entfernt, da die entsprechende Funktionalit&auml;t keinen wirklichen praktischen Nutzen brachte,
 daf&uuml;r aber etliche Taktzyklen mit bedingten Sp&uuml;ngen und zus&auml;tzlichen Zeitabfragen
 verschwendete. Desgleichen gilt f&uuml;r die historisch bedingte Aufteilung in System- und
 Programm-Datenfelder, die zus&auml;tzliche Verzweigungen und zwei getrennte Funktionen zur
 Zusammensetzung des Dateinamens erforderlich machte. Das neue ST-System verwendet nur noch den
 Ordner DATA, in dem alle Datenfelder abgelegt sind.


<div class="crlf1"></div>
<h2>Speicherverwaltung</h2>
Der Speicherhenkel jedes allozierten Speicherblocks enth&auml;lt relevante Daten des zugeordneten
 Speicherblocks. Datenfelder, deren Inhalt mit einer Funktion der Datenbankmaschine ge&auml;ndert
 wurde, werden vor ihrer Freigabe selbstverst&auml;ndlich gespeichert. Greift die Datenbankmaschine
 auf ein Feld zu, wird dessen <i>ge&auml;ndert</i>-F&auml;hnchen automatisch gesetzt. Das Speichern
 "normaler" Dateien wurde inzwischen (Stand 22.02.2012) vollst&auml;ndig automatisiert. Wenn Sie
 bereits beim Aufruf von <a href="../sys/ldr01.htm">LDreq()</a> das <i>ge&auml;ndert</i>-
F&auml;hnchen setzen, wird das Feld bei der Freigabe des Speicherhenkels automatisch gesichert.
 Etwaige &Auml;nderungen der Dateigr&ouml;sse m&uuml;ssen dem Lader mit der Funktion
 <a href="../sys/ldr0C.htm">LDsts()</a> mitgeteilt werden, um die entsprechenden Parameter des
 Speicherhenkels zu korrigieren.
<div class="crlf1"></div>
<h2>Instanzen</h2>
Dateien, Felder und Speicherbl&ouml;cke k&ouml;nnen &uuml;ber LDreq() mehrmals angefordert werden.
 Ist ein Feld bereits geladen, dann erh&ouml;ht der Lader nur den im Speicherhenkel angelegten
 Instanzz&auml;hler um eins und gibt in der &uuml;bergebenen LD-Struktur die Daten des bereits
 geladenen Feldes zur&uuml;ck. Fordert eine Funktion &uuml;ber LDfre() die Freigabe des Feldes,
 so wird der Instanzz&auml;hler um eins erniedrigt. Das Feld wird nur dann freigegeben, wenn der
 Instanzz&auml;hler gleich Null ist, anderenfalls verbleibt es im Speicher. Dies gilt analog auch
 f&uuml;r Dateien und Speicherbl&ouml;cke.
<div class="crlf1"></div>
Das war die gute Nachricht. Die Sache hat nat&uuml;rlich einen kleinen, recht vertrackten Haken:
 Die Lese- und Schreibvorg&auml;nge aller Instanzen eines Speicherblocks erfolgen auf eben diesen
 einen Speicherblock. Es liegt in Ihrer eigenen Verantwortung, Speicherbl&ouml;cke zeitlich so zu
 allozieren und wieder freizugeben, dass die darin enthaltenen Daten konsistent bleiben.
<div class="crlf1"></div>
<h2>Anwendung</h2>
Die folgenden Seiten enthalten eine detailierte Beschreibung der Anwendungsgebiete des Laders mit
 Codebeispielen. Da das Tutorial etwas umfangreicher ist, wurde es in mehrere Seiten aufgeteilt.
 Die n&auml;chste Seite beschreibt, wie man den Lader startet und wieder beendet.
</div>
<div class="crlf2"></div>
&#160;&#160;&#160;<a href="index.htm"><img src="../../../../pics/nav_up.png" alt="aufw&auml;rts" width="20" height="20" border="0" title="aufw&auml;rts" /></a>
&#160;&#160;&#160;<a href="0300.htm"><img src="../../../../pics/nav_bk.png" alt="zur&uuml;ck" width="20" height="20" border="0" title="zur&uuml;ck" /></a>
&#160;&#160;&#160;<a href="0401.htm"><img src="../../../../pics/nav_fw.png" alt="vorw&auml;rts" width="20" height="20" border="0" title="vorw&auml;rts" /></a>
<div class="crlf1"></div>
</body>
</html>
